#ifndef TTY
#define TTY

#include "kernel/externc.h"
#include "kernel/buffer.h"

#define TTY_ROW 25
#define TTY_COLUMN 80

typedef struct
{
    TerminateBuffer* buffer;
    int startRow;
} Teletype;

typedef struct
{
    int curRow;
    int curColumn;
} Cursor;

BEGIN_EXTERNC

void CreateTeletype(Teletype* tty);
TerminateBuffer* GetTerminateBuffer(Teletype* tty);
Buff GetBuffer(Teletype* tty);
void GetCursor(Teletype *tty, Cursor* cursor);
void StartNewRow(Teletype* tty);
void WriteCharacter(Teletype* tty, short k);
void DeleteLastCharacter(Teletype* tty);
void TeletypeKeyPressed(Teletype* tty,int k,short kValue,int modifiers);
Boolean CheckIsPrintf(Teletype* tty);
Boolean IsBuffFull(Teletype* tty);
void PageUp(Teletype* tty);
void PageDown(Teletype* tty);
void Home(Teletype* tty);
void End(Teletype* tty);
void FreeTty(Teletype* tty);

END_EXTERNC

#endif // TTY

